"""
四、按要求操作

1. 定义一个类（proxy类，代理类），内部用字典 (self.data) 来存储数据
2. 实例化时，可以以关键字的形式提供属性的名字和值，也可以不提供任何属性
3. 获取实例的 data 属性时，返回 self.data
4. 获取实例的 name, age, gender 等属性时，返回self.data里面对应名字的值
5. 设置实例的 name, age, gender 等属性时，对应地设置self.data里面对应的key
6. 删除实例的 name, age, gender 等属性时，对应地删除self.data里面对应的key
"""

class Pretty:

    def __init__(self, **kwargs):
        self.__dict__['data'] = kwargs

    def __getattr__(self, key):
        if key == 'data':
            return self.data
        else:
            return self.data[key]

    def __setattr__(self, key, value):
        self.data[key] = value

    def __delattr__(self, key):
        del self.data[key]
